Visium assays are around ~50um in size so spots can be classed as “bulk” genes.
Anchor-based Integration methods (Seurat v3 / v4) is the probabilistic transfer of cell type annotations from scRNA-seq to spatial data (different from deconvolution).
Matches expression profiles/ noise distribution between single-cell reference and spatial spots
Key Assumption: - Each spatial spot is dominated by one cell type - Focus on identifying the primary cell type per spot
A. Key Differences Comparison
| Aspect | Integration | Deconvolution |
|---|---|---|
| Goal | Identify dominant cell type | Quantify all cell type proportions |
| Output | Discrete labels | Continuous proportions |
| Spot Assumption | One dominant cell type | Multiple mixed cell types |
| Computational Focus | Pattern matching | Mathematical decomposition |
| Biological Reality | Simplified view | More realistic for 55μm spots |
| Speed | Fast | Slower |
| Complexity | Simple | Complex |
| Quantitative Info | Low | High |
| Mixed Cell Handling | Poor | Excellent |
| Interpretation | Easy | Moderate |
| Best for Visium | Good for exploration | Better for analysis |
| Reference Requirements | Standard | High quality needed |
B. Cheatsheet: Spatial Platform-Specific Method Performance
Comprehensive Method Benchmarking: Deconvolution vs Integration vs Hybrid
| Platform | Resolution | Best Deconvolution | Best Integration | Best Hybrid | Recommended Approach |
|---|---|---|---|---|---|
| 10x Visium | 55μm | CARD, Cell2location, RCTD | Seurat v3/v4 anchors | Tangram | Deconvolution preferred |
| Slide-seqV2 | 10μm | Cell2location, RCTD | Seurat anchors, Harmony | Tangram, CytoSPACE | Deconvolution preferred |
| MERFISH | Single-cell | Cell2location, SpatialDecon | Seurat anchors | Tangram | Hybrid or Integration |
| seqFISH+ | Single-cell | CARD, DestVI | Seurat anchors | Tangram | Hybrid or Integration |
| Stereo-seq | 500nm-1μm | SpatialDecon, CARD | Seurat anchors | Tangram | Deconvolution preferred |
| Xenium | Subcellular | Cell2location | Seurat v4 anchors | Tangram, CytoSPACE | Hybrid recommended |
| CosMx | Single-cell | Cell2location | Seurat anchors | Tangram | Hybrid recommended |
Cheatsheet: Technology-Specific Deconvolution Performance
Matrix
| Method | Visium | Slide-seqV2 | MERFISH | seqFISH+ | Stereo-seq |
|---|---|---|---|---|---|
| CARD | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Cell2location | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| RCTD | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| Tangram | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| SpatialDWLS | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| SpatialDecon | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| STdeconvolve | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| DestVI | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
# Install packages if not already installed
# install.packages(c("Seurat", "Matrix", "ggplot2", "viridis", "patchwork", "dplyr"))
# install.packages(c("sp", "spdep", "spatstat", "pheatmap", "sctransform"))
# SeuratData::InstallData("stxBrain.SeuratData")
# devtools::install_github('satijalab/seurat-data')
# devtools::install_github("dmcable/spacexr", build_vignettes = FALSE)
# Load essential libraries
library(Seurat) # v5.3.1 - main spatial analysis package
library(SeuratData) # Example Data to Analyse
library(ggplot2) # for visualization
library(dplyr) # for data manipulation
library(Matrix) # for sparse matrices
library(viridis) # for color palettes
library(patchwork) # for combining plots
library(spdep) # for spatial statistics
library(pheatmap) # for heatmaps
library(sctransform) # for SCTransform normalization
library(future) # for parallel processing
library(knitr) # for visualising tables
library(spacexr) # for Robust Cell Type Decomposition
library(ggsci) # distinct colots
# Increase the memory limit for parallel processing
options(future.globals.maxSize = 8000 * 1024^2) # Set to 4GB
# Set seed for reproducibility
set.seed(42)We want to use a cortical scRNA-seq dataset.
Best practise subset the spatial data to match the scRNA-Seq data (in this case the cortex)
# Subset to clusters of interest
cortex <- subset(seurat_obj, seurat_clusters %in% c(0,1))
# Extract and attach spatial coordinates from anterior1 image
centroids <- cortex[["anterior2"]]@boundaries$centroids
coords <- setNames(as.data.frame(centroids@coords), c("x", "y"))
rownames(coords) <- centroids@cells
cortex$x <- coords[colnames(cortex), "x"]
cortex$y <- coords[colnames(cortex), "y"]
# Perform spatial subsetting using image position Subset to upper right quadrant
cortex <- subset(cortex, y <= min(cortex$y ) | x >= max(cortex$x ), invert = TRUE)
# Visualize the subsetted data on full image vs cropped image
p1 <- SpatialDimPlot(cortex, crop = TRUE, label = TRUE)
p2 <- SpatialDimPlot(cortex, crop = FALSE, label = TRUE, pt.size.factor = 1, label.size = 3)
p1 + p2# Best Practice: Renormalize spatial data
cortex <- SCTransform(cortex, assay = "Spatial", verbose = FALSE) %>%
RunPCA(verbose = FALSE)Reference scRNA-seq dataset: taxonomy from the Allen Institute
| Source Data | Allen Brain Map |
| Species | Adult mouse |
| Tissue | Cortex |
| Platform | SMART-Seq2 |
| Integration Method | ‘anchor’-based (Seurat v3) |
#~~~~~~~~~~~~~~
# 2.1 Get Single Cell Data for Cortex ~~~~~~~~~~~~
#~~~~~~~~~~~~~~
if (!file.exists("G:/SpatialOmics/Tx/cache/allen-brain-processed.RDS")) {
# Download File
if (!file.exists("G:/SpatialOmics/Tx/allen_cortex.rds")) {
download.file(url = "https://www.dropbox.com/s/cuowvm4vrf65pvq/allen_cortex.rds?dl=1"
, destfile = "G:/SpatialOmics/Tx/allen_cortex.rds",
, method = "auto"
, mode = "wb")
}
allen_reference <- readRDS("G:/SpatialOmics/Tx/allen_cortex.rds")
allen_reference <- UpdateSeuratObject(allen_reference)
Idents(allen_reference) <- "subclass"
# Normalize Data
allen_reference <- SCTransform (
allen_reference
, ncells = 3000 # learns noise models on 3000 cells, whole dataset normalised with no loss in performance
, verbose = FALSE ) %>%
# PCA
RunPCA(verbose = FALSE) %>%
# UMAP
RunUMAP( dims = 1:30 )
saveRDS(allen_reference, "G:/SpatialOmics/Tx/cache/allen-brain-processed.RDS")
} else {
allen_reference <- readRDS("G:/SpatialOmics/Tx/cache/allen-brain-processed.RDS")
}# the annotation is stored in the 'subclass' column of object metadata
DimPlot(allen_reference, group.by = "subclass", label = TRUE)UMAP Plot of reference scRNA-Seq data
Hoes does FindTransferAnchors Function work?
Step 1: Feature Selection & Dimensional
Find intersect of most variable genes in scRNA-Seq and Spatial data
Dimension reduction (PCA / CCA)
Step 2: Mutual Nearest Neighbor (MNN). For each spot in Spatial data dataset:
Find k nearest neighbors in scRNA-Seq
For each neighbor, check if Spatial spot is also its neighbor
If mutual → potential “anchor pair”
Step 3: Anchor Filtering & Scoring
Distance threshold (closer = better)
Neighborhood overlap score
Local neighborhood structure consistency
anchors <- FindTransferAnchors(
reference = allen_reference # Reference dataset (scRNA-seq) to transfer annotations from
, query = cortex # Query dataset (spatial transcriptomics) to receive annotations
, normalization.method = "SCT" # Normalization method to make datasets comparable (SCTransform)
)
predictions.assay <- TransferData(
anchorset = anchors # Anchor pairs from FindTransferAnchors linking scRNA-Seq to spatial data
, refdata = allen_reference$subclass # Reference scRNA-Seq to transfer (cell type labels from metadata column)
, prediction.assay = TRUE # Return full prediction scores for all cell types per spot
, weight.reduction = cortex[["pca"]] # Dimensional reduction from query to weight anchor contributions
, dims = 1:30 # Dimensions to use for weighting anchor strength
, k.weight = 49 # Number of neighbors to consider when weighting anchors (Def=50)
)
cortex[["predictions"]] <- predictions.assay
tmp <- predictions.assay$data[,1:5]
tmp <- round(predictions.assay$data[,1:5], 1)
tmp <- tmp[rowSums(tmp) > 0,]
tmp[tmp==0] <-""
tmp %>% kable(caption="Cell probablity scores for 5 spots")| AAACAGAGCGACTCCT-1 | AAACGTGTTCGCCCTA-1 | AAACTAACGTGGCGAC-1 | AAAGGGATGTAGCAAG-1 | AAAGGTAAGCTGTACC-1 | |
|---|---|---|---|---|---|
| L6 IT | 0.1 | 0.1 | 0.1 | ||
| L2/3 IT | 0.1 | 0.7 | 0.6 | ||
| L5 PT | 0.1 | 0.2 | 0.2 | ||
| L4 | 0.1 | 0.1 | |||
| L5 IT | 0.3 | 0.4 | 0.3 | 0.1 | |
| Oligo | 0.1 | 0.2 | 0.1 | ||
| Astro | 0.4 | 0.1 | 0.2 | 0.1 | |
| Macrophage | 0.1 | 0.2 | 0.1 | ||
| max | 0.4 | 0.4 | 0.7 | 0.3 | 0.6 |
TransferData creates a probability matrix where each spatial spot gets a confidence score for every possible cell type, rather than just a single “best guess” assignment.
In this case: “L6 CT” cells that govern Feedback control to thalamus
DefaultAssay(cortex) <- "predictions"
SpatialFeaturePlot(cortex, features = c("L6 CT", "L2/3 IT"), pt.size.factor = 1.6, ncol = 2, crop = TRUE)Spatial statistics can now be being used to find cell types that cluster together spatially, rather than finding spatially variable genes.
cortex <- FindSpatiallyVariableFeatures(
cortex
, assay = "predictions"
, selection.method = "moransi"
, features = rownames(cortex)
, r.metric = 5
, slot = "data"
)
top.clusters <- head(SpatiallyVariableFeatures(cortex, method = "moransi"), 4)
SpatialPlot(object = cortex, features = top.clusters, ncol = 2)Publication: Cable et al., Nature Biotechnology 2022
Strengths:
Here we reuse the Allen Reference Dataset
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
# 3.1 Set up query and reference with the RCTD functions "Reference" & "SpatialRNA"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
if (!file.exists("G:/SpatialOmics/Tx/cache/allen-brain-rctd-ref.RDS")) {
# Set up REFERENCE scRNA-Seq data
ref <- UpdateSeuratObject(allen_reference)
Idents(ref) <- "celltype"
# Clusters ~~~~~~
# Remove prohibited slash (/) from subclass names
ref$subclass_fixed <- as.factor(ref$subclass)
levels(ref$subclass_fixed) <- gsub("\\/", "_", levels(ref$subclass_fixed))
cluster <- as.factor(ref$subclass_fixed)
names(cluster) <- colnames(ref)
# Check and remove cell types with < 25 cells
cell_counts <- table(cluster)
print(cell_counts)
# Identify problematic cell types
low_count_types <- names(cell_counts)[cell_counts < 25]
cat("Cell types with < 25 cells:", paste(low_count_types, collapse = ", "), "\n")
keep_cells <- !cluster %in% low_count_types
cluster <- factor(cluster[keep_cells])
# Counts ~~~~~~
# Extract counts, clusters, UMI counts/spot to feed into Reference function
counts <- allen_reference[["RNA"]]$counts[, keep_cells]
nCount_UMI <- ref$nCount_RNA
names(nCount_UMI) <- colnames(ref)
nCount_UMI <- nCount_UMI[keep_cells]
reference <- Reference(counts #scRNA-Seq Couunts
, cluster #preidenfied cell clusters
, nCount_UMI #library size
)
# Set up QUERY Spatial Data
counts <- cortex[["Spatial"]]$counts
coords <- GetTissueCoordinates(cortex)
colnames(coords) <- c("x", "y")
coords[is.na(colnames(coords))] <- NULL
# Create SpatialRNA object for the RCTD
query <- SpatialRNA(
coords # Spatial coordinates
, counts # Gene Count Matrix (Raw)
, colSums(counts) # Library size (Umi / spot)
)
saveRDS(reference, "G:/SpatialOmics/Tx/cache/allen-brain-rctd-ref.RDS")
saveRDS(query, "G:/SpatialOmics/Tx/cache/stxbrain-rctd-query.RDS")
} else {
reference <- readRDS("G:/SpatialOmics/Tx/cache/allen-brain-rctd-ref.RDS")
query <- readRDS("G:/SpatialOmics/Tx/cache/stxbrain-rctd-query.RDS")
} ##
## Astro Endo L2_3 IT L4 L5 IT L5 PT L6 CT
## 368 94 982 1401 880 544 960
## L6 IT L6b Lamp5 Macrophage Meis2 NP Oligo
## 1872 358 1122 51 45 362 91
## Peri Pvalb Serpinf1 SMC Sncg Sst Vip
## 32 1337 27 55 125 1741 1728
## VLMC
## 67
RCTD <- run.RCTD(
RCTD # RCTD object containing spatial data and reference for deconvolution
, doublet_mode = "doublet" # Deconvolution mode allowing spots to contain 1-2 dominant cell types
)
# Add result to Seurat Object
cortex <- AddMetaData(
cortex
, metadata = RCTD@results$results_df
)
cat("RCTD metadata columns:\n") ## RCTD metadata columns:
## [1] "orig.ident" "nCount_Spatial" "nFeature_Spatial" "slice"
## [5] "region" "spatial_x" "spatial_y" "percent.mt"
## [9] "nCount_SCT" "nFeature_SCT" "SCT_snn_res.0.8" "seurat_clusters"
## [13] "cluster_names" "x" "y" "spot_class"
## [17] "first_type" "second_type" "first_class" "second_class"
## [21] "min_score" "singlet_score" "conv_all" "conv_doublet"
In doublet mode you get:
p1 <- SpatialDimPlot(cortex, group.by = "first_type") +
scale_fill_npg()
p2 <- SpatialDimPlot(cortex, group.by = "second_type")+
scale_fill_npg()
p1 | p2## ─ Session info ───────────────────────────────────────────────────────────────
## setting value
## version R version 4.5.0 (2025-04-11 ucrt)
## os Windows 10 x64 (build 19045)
## system x86_64, mingw32
## ui RTerm
## language (EN)
## collate English_United Kingdom.utf8
## ctype English_United Kingdom.utf8
## tz Europe/London
## date 2025-07-20
## pandoc 3.2 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
## quarto NA @ C:\\PROGRA~1\\RStudio\\RESOUR~1\\app\\bin\\quarto\\bin\\quarto.exe
##
## ─ Packages ───────────────────────────────────────────────────────────────────
## package * version date (UTC) lib source
## abind 1.4-8 2024-09-12 [1] CRAN (R 4.5.0)
## boot 1.3-31 2024-08-28 [2] CRAN (R 4.5.0)
## bslib 0.9.0 2025-01-30 [1] CRAN (R 4.5.0)
## cachem 1.1.0 2024-05-16 [1] CRAN (R 4.5.0)
## class 7.3-23 2025-01-01 [2] CRAN (R 4.5.0)
## classInt 0.4-11 2025-01-08 [1] CRAN (R 4.5.1)
## cli 3.6.5 2025-04-23 [1] CRAN (R 4.5.0)
## cluster 2.1.8.1 2025-03-12 [2] CRAN (R 4.5.0)
## codetools 0.2-20 2024-03-31 [2] CRAN (R 4.5.0)
## cowplot 1.2.0 2025-07-07 [1] CRAN (R 4.5.1)
## crayon 1.5.3 2024-06-20 [1] CRAN (R 4.5.0)
## data.table 1.17.2 2025-05-12 [1] CRAN (R 4.5.0)
## DBI 1.2.3 2024-06-02 [1] CRAN (R 4.5.0)
## deldir 2.0-4 2024-02-28 [1] CRAN (R 4.5.0)
## dichromat 2.0-0.1 2022-05-02 [1] CRAN (R 4.5.0)
## digest 0.6.37 2024-08-19 [1] CRAN (R 4.5.0)
## doParallel 1.0.17 2022-02-07 [1] CRAN (R 4.5.1)
## dotCall64 1.2 2024-10-04 [1] CRAN (R 4.5.1)
## dplyr * 1.1.4 2023-11-17 [1] CRAN (R 4.5.0)
## e1071 1.7-16 2024-09-16 [1] CRAN (R 4.5.1)
## evaluate 1.0.3 2025-01-10 [1] CRAN (R 4.5.0)
## farver 2.1.2 2024-05-13 [1] CRAN (R 4.5.0)
## fastDummies 1.7.5 2025-01-20 [1] CRAN (R 4.5.1)
## fastmap 1.2.0 2024-05-15 [1] CRAN (R 4.5.0)
## fitdistrplus 1.2-4 2025-07-03 [1] CRAN (R 4.5.1)
## foreach 1.5.2 2022-02-02 [1] CRAN (R 4.5.1)
## future * 1.58.0 2025-06-05 [1] CRAN (R 4.5.1)
## future.apply 1.20.0 2025-06-06 [1] CRAN (R 4.5.1)
## generics 0.1.4 2025-05-09 [1] CRAN (R 4.5.0)
## ggplot2 * 3.5.2 2025-04-09 [1] CRAN (R 4.5.1)
## ggrepel 0.9.6 2024-09-07 [1] CRAN (R 4.5.1)
## ggridges 0.5.6 2024-01-23 [1] CRAN (R 4.5.1)
## ggsci * 3.2.0 2024-06-18 [1] CRAN (R 4.5.1)
## globals 0.18.0 2025-05-08 [1] CRAN (R 4.5.0)
## glue 1.8.0 2024-09-30 [1] CRAN (R 4.5.0)
## goftest 1.2-3 2021-10-07 [1] CRAN (R 4.5.0)
## gridExtra 2.3 2017-09-09 [1] CRAN (R 4.5.1)
## gtable 0.3.6 2024-10-25 [1] CRAN (R 4.5.0)
## htmltools 0.5.8.1 2024-04-04 [1] CRAN (R 4.5.0)
## htmlwidgets 1.6.4 2023-12-06 [1] CRAN (R 4.5.0)
## httpuv 1.6.16 2025-04-16 [1] CRAN (R 4.5.0)
## httr 1.4.7 2023-08-15 [1] CRAN (R 4.5.0)
## ica 1.0-3 2022-07-08 [1] CRAN (R 4.5.0)
## igraph 2.1.4 2025-01-23 [1] CRAN (R 4.5.1)
## irlba 2.3.5.1 2022-10-03 [1] CRAN (R 4.5.1)
## iterators 1.0.14 2022-02-05 [1] CRAN (R 4.5.1)
## jquerylib 0.1.4 2021-04-26 [1] CRAN (R 4.5.0)
## jsonlite 2.0.0 2025-03-27 [1] CRAN (R 4.5.0)
## KernSmooth 2.23-26 2025-01-01 [2] CRAN (R 4.5.0)
## knitr * 1.50 2025-03-16 [1] CRAN (R 4.5.0)
## later 1.4.2 2025-04-08 [1] CRAN (R 4.5.0)
## lattice 0.22-6 2024-03-20 [2] CRAN (R 4.5.0)
## lazyeval 0.2.2 2019-03-15 [1] CRAN (R 4.5.1)
## lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.5.0)
## listenv 0.9.1 2024-01-29 [1] CRAN (R 4.5.1)
## lmtest 0.9-40 2022-03-21 [1] CRAN (R 4.5.1)
## magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.5.0)
## MASS 7.3-65 2025-02-28 [2] CRAN (R 4.5.0)
## Matrix * 1.7-3 2025-03-11 [1] CRAN (R 4.5.1)
## matrixStats 1.5.0 2025-01-07 [1] CRAN (R 4.5.1)
## mime 0.13 2025-03-17 [1] CRAN (R 4.5.0)
## miniUI 0.1.2 2025-04-17 [1] CRAN (R 4.5.0)
## nlme 3.1-168 2025-03-31 [2] CRAN (R 4.5.0)
## parallelly 1.45.0 2025-06-02 [1] CRAN (R 4.5.1)
## patchwork * 1.3.1 2025-06-21 [1] CRAN (R 4.5.1)
## pbapply 1.7-2 2023-06-27 [1] CRAN (R 4.5.1)
## pheatmap * 1.0.12 2019-01-04 [1] CRAN (R 4.5.0)
## pillar 1.10.2 2025-04-05 [1] CRAN (R 4.5.0)
## pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.5.0)
## plotly 4.11.0 2025-06-19 [1] CRAN (R 4.5.1)
## plyr 1.8.9 2023-10-02 [1] CRAN (R 4.5.1)
## png 0.1-8 2022-11-29 [1] CRAN (R 4.5.0)
## polyclip 1.10-7 2024-07-23 [1] CRAN (R 4.5.0)
## progressr 0.15.1 2024-11-22 [1] CRAN (R 4.5.1)
## promises 1.3.2 2024-11-28 [1] CRAN (R 4.5.0)
## proxy 0.4-27 2022-06-09 [1] CRAN (R 4.5.1)
## purrr 1.0.4 2025-02-05 [1] CRAN (R 4.5.0)
## R6 2.6.1 2025-02-15 [1] CRAN (R 4.5.0)
## RANN 2.6.2 2024-08-25 [1] CRAN (R 4.5.1)
## rappdirs 0.3.3 2021-01-31 [1] CRAN (R 4.5.0)
## RColorBrewer 1.1-3 2022-04-03 [1] CRAN (R 4.5.0)
## Rcpp 1.0.14 2025-01-12 [1] CRAN (R 4.5.0)
## RcppAnnoy 0.0.22 2024-01-23 [1] CRAN (R 4.5.1)
## RcppHNSW 0.6.0 2024-02-04 [1] CRAN (R 4.5.1)
## reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.5.1)
## reticulate 1.42.0 2025-03-25 [1] CRAN (R 4.5.1)
## rlang 1.1.6 2025-04-11 [1] CRAN (R 4.5.0)
## rmarkdown 2.29 2024-11-04 [1] CRAN (R 4.5.0)
## ROCR 1.0-11 2020-05-02 [1] CRAN (R 4.5.1)
## RSpectra 0.16-2 2024-07-18 [1] CRAN (R 4.5.1)
## rstudioapi 0.17.1 2024-10-22 [1] CRAN (R 4.5.0)
## Rtsne 0.17 2023-12-07 [1] CRAN (R 4.5.1)
## s2 1.1.9 2025-05-23 [1] CRAN (R 4.5.1)
## sass 0.4.10 2025-04-11 [1] CRAN (R 4.5.0)
## scales 1.4.0 2025-04-24 [1] CRAN (R 4.5.0)
## scattermore 1.2 2023-06-12 [1] CRAN (R 4.5.1)
## sctransform * 0.4.2 2025-04-30 [1] CRAN (R 4.5.1)
## sessioninfo 1.2.3 2025-02-05 [1] CRAN (R 4.5.0)
## Seurat * 5.3.0 2025-04-23 [1] CRAN (R 4.5.1)
## SeuratData * 0.2.2.9002 2025-07-16 [1] Github (satijalab/seurat-data@3e51f44)
## SeuratObject * 5.1.0 2025-04-22 [1] CRAN (R 4.5.1)
## sf * 1.0-21 2025-05-15 [1] CRAN (R 4.5.1)
## shiny 1.10.0 2024-12-14 [1] CRAN (R 4.5.0)
## sp * 2.2-0 2025-02-01 [1] CRAN (R 4.5.1)
## spacexr * 2.2.1 2025-07-20 [1] Github (dmcable/spacexr@698d5b0)
## spam 2.11-1 2025-01-20 [1] CRAN (R 4.5.1)
## spatstat.data 3.1-6 2025-03-17 [1] CRAN (R 4.5.1)
## spatstat.explore 3.4-3 2025-05-21 [1] CRAN (R 4.5.1)
## spatstat.geom 3.4-1 2025-05-20 [1] CRAN (R 4.5.1)
## spatstat.random 3.4-1 2025-05-20 [1] CRAN (R 4.5.1)
## spatstat.sparse 3.1-0 2024-06-21 [1] CRAN (R 4.5.1)
## spatstat.univar 3.1-4 2025-07-13 [1] CRAN (R 4.5.1)
## spatstat.utils 3.1-4 2025-05-15 [1] CRAN (R 4.5.1)
## spData * 2.3.4 2025-01-08 [1] CRAN (R 4.5.1)
## spdep * 1.3-13 2025-06-10 [1] CRAN (R 4.5.1)
## stringi 1.8.7 2025-03-27 [1] CRAN (R 4.5.0)
## stringr 1.5.1 2023-11-14 [1] CRAN (R 4.5.0)
## stxBrain.SeuratData * 0.1.2 2025-07-16 [1] local
## stxKidney.SeuratData * 0.1.0 2025-07-18 [1] local
## survival 3.8-3 2024-12-17 [2] CRAN (R 4.5.0)
## tensor 1.5.1 2025-06-17 [1] CRAN (R 4.5.0)
## tibble 3.2.1 2023-03-20 [1] CRAN (R 4.5.0)
## tidyr 1.3.1 2024-01-24 [1] CRAN (R 4.5.0)
## tidyselect 1.2.1 2024-03-11 [1] CRAN (R 4.5.0)
## units 0.8-7 2025-03-11 [1] CRAN (R 4.5.1)
## uwot 0.2.3 2025-02-24 [1] CRAN (R 4.5.1)
## vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.5.0)
## viridis * 0.6.5 2024-01-29 [1] CRAN (R 4.5.1)
## viridisLite * 0.4.2 2023-05-02 [1] CRAN (R 4.5.0)
## withr 3.0.2 2024-10-28 [1] CRAN (R 4.5.0)
## wk 0.9.4 2024-10-11 [1] CRAN (R 4.5.1)
## xfun 0.52 2025-04-02 [1] CRAN (R 4.5.0)
## xtable 1.8-4 2019-04-21 [1] CRAN (R 4.5.0)
## yaml 2.3.10 2024-07-26 [1] CRAN (R 4.5.0)
## zoo 1.8-14 2025-04-10 [1] CRAN (R 4.5.1)
##
## [1] C:/Users/Nabila/AppData/Local/R/win-library/4.5
## [2] C:/Program Files/R/R-4.5.0/library
## * ── Packages attached to the search path.
##
## ──────────────────────────────────────────────────────────────────────────────